home *** CD-ROM | disk | FTP | other *** search
/ Best of Shareware / Best of PC Windows Shareware 1.0 - Wayzata Technology (7111) (1993).iso / mac / DOS / PROGRAMG / FORTHCMP / LIST.4TH < prev    next >
Text File  |  1992-03-30  |  2KB  |  68 lines

  1. \ FORTH SCREEN FILE  LIST PROGRAM
  2. \ COPYRIGHT (C) 1985 BY THOMAS ALMY
  3. \ ALL RIGHTS RESERVED.
  4.  
  5. \  Users of ForthCMP are given permission to use or distribute this
  6. \  program, as long as no charge is made and the credit message is maintained.
  7.  
  8. 100 MSDOS
  9. SCONSTANT SDEFSTR SCR" \ SOURCE DEFAULTS TO .SCR 
  10. SCONSTANT DDEFSTR LST" \ DESTINATION  DEFAULTS TO .LST 
  11. HEX 
  12. 6000 CONSTANT BUFSIZ   \ each i/o buffer is to be LARGE!
  13. DECIMAL
  14. INCLUDE FILTER
  15.  
  16. 1 0 IN/OUT
  17. : .COUNTED-LINE  ( line# - )
  18.   CR 2 .R  2 SPACES  HERE 64 -TRAILING TYPE ;
  19.  
  20. 1 1 IN/OUT
  21. : LIST ( SCREEN# - VALID )
  22.   HERE 64 EXPECT  
  23.   SPAN @ 0> IF ( got one )
  24.     ." Screen " .  CR
  25.     15 0 DO I .COUNTED-LINE  HERE  64 EXPECT LOOP
  26.     15 .COUNTED-LINE 
  27.     CR CR CR   1  
  28.   ELSE ( done )
  29.     DROP 0 
  30.   THEN ; 
  31.  
  32. 0 0 IN/OUT 
  33. : NOTICE  
  34.     ." FORTH SCREEN LISTING PROGRAM " CR
  35.     ." COPYRIGHT (C) 1985 BY THOMAS ALMY " CR 
  36.   ;
  37.  
  38. 0 0 IN/OUT 
  39. : USAGE   
  40.     CONSOLE CR
  41.     ." USAGE:  LIST  [SCRFILE] [LISTFILE]" CR
  42.     ." where SCRFILE is a file of Forth screens (default extension SCR)" CR
  43.     ." and LISTFILE is file for listing (default extension LST)" CR
  44.     ." If SCRFILE is not specified, standard input is used," CR
  45.     ." use `-' if listfile is to be specified." CR
  46.     ABORT
  47.   ;
  48.  
  49. : MAIN    
  50.         SETBUFS ( which allows I/O )
  51.     NOTICE  ( Welcome message )
  52.     SETFILES IF USAGE THEN ( open files, if possible )
  53.     OPTIONSTRING 2+ @ IF USAGE THEN ( any arg means bad syntax )
  54.     0 
  55.     BEGIN 
  56.         DUP LIST 
  57.     WHILE
  58.         1+ DUP 3 MOD 0= IF CR CR CR CR CR CR THEN 
  59.     REPEAT
  60.     DROP 
  61.     BYE 
  62.   ;
  63.  
  64. INCLUDE DOS2
  65. INCLUDE FORTHLIB
  66. END
  67.  
  68.